React์ ๋์์ฑ ๊ธฐ๋ฅ, ํนํ ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ ํ์ํ๊ณ , ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ๋์ ๋ฐ์์ฑ๊ณผ ์ฑ๋ฅ์ ๊ฐ์ถ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
React ๋์์ฑ ๊ธฐ๋ฅ: ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง
์ญ๋์ ์ธ ์น ๊ฐ๋ฐ์ ์ธ๊ณ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋ฐ์์ฑ ์๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ๋ ์ด์ ์ฌ์น๊ฐ ์๋ ํ์์ ๋๋ค. ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ์ํ ์ ๋์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React๋ ์ด๋ฌํ ์๊ตฌ๋ฅผ ์ถฉ์กฑ์ํค๊ธฐ ์ํด ๋์์ฑ ๊ธฐ๋ฅ(Concurrent Features)์ ๋์ ํ๋ฉฐ ์งํํด ์์ต๋๋ค. ์ด ๊ธ์์๋ ๋์์ฑ ๊ธฐ๋ฅ์ ๊ฐ์ฅ ์ํฅ๋ ฅ ์๋ ์ธก๋ฉด ์ค ํ๋์ธ ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง(Priority Lane Scheduling)์ ๋ํด ์์ธํ ์์๋ด ๋๋ค. ์ด๊ฒ์ด ๋ฌด์์ธ์ง, ์ ์ค์ํ์ง, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์๋ค์ด ์ด๋ฅผ ํ์ฉํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ๋งค์ฐ ๋ถ๋๋ฝ๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ด๋ป๊ฒ ๋ง๋ค์ด๋ผ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํต์ฌ ๊ฐ๋ ์ดํดํ๊ธฐ
React ๋์์ฑ ๊ธฐ๋ฅ์ด๋ ๋ฌด์์ธ๊ฐ?
React ๋์์ฑ ๊ธฐ๋ฅ์ React๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๊ทผ๋ณธ์ ์ธ ๋ณํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด์ ์๋ React๊ฐ ๋๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ์ํํ์ฌ ์ ์ฒด ์ ๋ฐ์ดํธ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋ ๋๊น์ง ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ต๋๋ค. ์ด๋ ํนํ ์ ์ฌ์ ๊ธฐ๊ธฐ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฒ๋ฒ ์ด๋ ์ ๋๋ฉ์ด์ , ์ฌ์ฉ์ ์ํธ์์ฉ์ ๋ํ ์ง์ฐ๋ ์๋ต, ์ ๋ฐ์ ์ผ๋ก ๋๋ฆฐ ๋๋์ ์ ๋ฐํ ์ ์์์ต๋๋ค. ๋์์ฑ ๊ธฐ๋ฅ์ React์ ๋์์ฑ(concurrency) ๊ฐ๋ ์ ๋์ ํ์ฌ ์ ๋ฐ์ดํธ๋ฅผ ์ค๋จ, ์ผ์ ์ค์ง, ์ฌ๊ฐ ๋ฐ ์ฐ์ ์์๋ฅผ ์ง์ ํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ CPU๊ฐ ์ฌ๋ฌ ์์ ์ ์ํํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฉํฐํ์คํน ์ด์์ฒด์ ์ ์ ์ฌํฉ๋๋ค.
๋์์ฑ ๊ธฐ๋ฅ์ ์ฃผ์ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํฅ์๋ ๋ฐ์์ฑ: ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ค์๋ UI๊ฐ ๋ฐ์์ฑ์ ์ ์งํฉ๋๋ค.
- ์ฑ๋ฅ ํฅ์: ๋ ๋๋ง์ ์ต์ ํํ๊ณ ๋ฉ์ธ ์ค๋ ๋ ์ฐจ๋จ์ ์ต์ํํฉ๋๋ค.
- ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ: ๋ ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์ , ๋ ๋น ๋ฅธ ์ ํ ๋ฐ ์ ๋ฐ์ ์ผ๋ก ๋ ์ ์ฐํ ๋๋์ ์ ๊ณตํฉ๋๋ค.
์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ ์ญํ
์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ React ๋์์ฑ ๊ธฐ๋ฅ์ ๋ฐ์์ฑ์ ๊ตฌ๋ํ๋ ์์ง์ ๋๋ค. ์ด๋ฅผ ํตํด React๋ ์ ๋ฐ์ดํธ์ ๊ธด๊ธ์ฑ์ ๋ฐ๋ผ ์ง๋ฅ์ ์ผ๋ก ์ฐ์ ์์๋ฅผ ์ ํ ์ ์์ต๋๋ค. ์ค์ผ์ค๋ฌ๋ ๋ค์ํ ์์ ์ ์๋ก ๋ค๋ฅธ ์ฐ์ ์์ ์์ค์ ํ ๋นํ์ฌ, ์ฌ์ฉ์ ์ํธ์์ฉ(ํด๋ฆญ, ํค ์ ๋ ฅ)์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ ๊ฒ๊ณผ ๊ฐ์ ๋์ ์ฐ์ ์์์ ์ ๋ฐ์ดํธ๊ฐ ์ฆ์ ์ฒ๋ฆฌ๋๋๋ก ๋ณด์ฅํ๋ ํํธ, ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ ๋ ์ค์ํ UI ์ ๋ฐ์ดํธ์ ๊ฐ์ ๋ฎ์ ์ฐ์ ์์์ ์์ ์ ์ง์ฐ๋ ์ ์์ต๋๋ค. ๋ฐ์ ๊ณตํญ์ ์์ํด ๋ณด์ธ์: ๋น์ ์ฐฉ๋ฅ๊ณผ ๊ฐ์ ๊ธด๊ธํ ๋ฌธ์ ๋ ์ํ๋ฌผ ์ฒ๋ฆฌ๋ณด๋ค ์ฐ์ ํฉ๋๋ค. ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ React์์ ์ด์ ์ ์ฌํ๊ฒ ์๋ํ๋ฉฐ, ์ค์๋์ ๋ฐ๋ผ ์์ ์ ํ๋ฆ์ ๊ด๋ฆฌํฉ๋๋ค.
์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ ์ฃผ์ ๊ฐ๋
- ์์ (Tasks): ์ปดํฌ๋ํธ ๋ ๋๋ง์ด๋ ์ํ ์ ๋ฐ์ดํธ์ ๊ฐ์ด React๊ฐ ์ํํ๋ ๊ฐ๋ณ ์์ ๋จ์์ ๋๋ค.
- ์ฐ์ ์์(Priorities): ๊ฐ ์์ ์๋ ๋์(๊ธด๊ธ)์์ ๋ฎ์(์ค์ํ์ง ์์)๊น์ง์ ์ฐ์ ์์ ์์ค์ด ํ ๋น๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ฐ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- `Normal`: ์ผ๋ฐ์ ์ธ ์ ๋ฐ์ดํธ์ฉ.
- `UserBlocking`: ์ฆ๊ฐ์ ์ธ ์ฌ์ฉ์ ์ํธ์์ฉ์ฉ.
- `Idle`: ๋ธ๋ผ์ฐ์ ๊ฐ ์ ํด ์ํ์ผ ๋ ์ํํ ์ ์๋ ์์ ์ฉ.
- ์ค์ผ์ค๋ฌ(The Scheduler): ์ฐ์ ์์์ ๋ฐ๋ผ ์์ ์ ๊ด๋ฆฌํ๊ณ ์คํํ๋ ์ฑ ์์ด ์๋ ์ปดํฌ๋ํธ์ ๋๋ค. React๋ ๋ด๋ถ ์ค์ผ์ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฌํ ์์ ์ด ์คํ๋๋ ๋ฐฉ์์ ์ต์ ํํฉ๋๋ค.
์ฌ์ธต ๋ถ์: ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ ์๋ ๋ฐฉ์
๋ ๋๋ง ๊ณผ์ ๊ณผ ์ฐ์ ์์ ์ง์
์ปดํฌ๋ํธ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด React๋ ๋ ๋๋ง ๊ณผ์ ์ ์์ํฉ๋๋ค. ๋์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ด ๊ณผ์ ์ด ์ต์ ํ๋ฉ๋๋ค. React ์ค์ผ์ค๋ฌ๋ ์ํ ์ ๋ฐ์ดํธ์ ์ฑ๊ฒฉ์ ๋ถ์ํ๊ณ ์ ์ ํ ์ฐ์ ์์ ์์ค์ ๊ฒฐ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฒํผ ํด๋ฆญ์ UserBlocking ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ฌ ํด๋ฆญ ํธ๋ค๋ฌ๊ฐ ์ฆ์ ์คํ๋๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ์๋ Idle ์ฐ์ ์์๊ฐ ํ ๋น๋์ด ๊ฐ์ ธ์ค๋ ๋์ UI๊ฐ ๋ฐ์์ฑ์ ์ ์งํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ค์ผ์ค๋ฌ๋ ์ด๋ฌํ ์์ ๋ค์ ๋ผ์ ๋ฃ์ด ๊ธด๊ธํ ์์ ์ด ์ฐ์ ์ฒ๋ฆฌ๋๋๋ก ํ๊ณ , ๋ค๋ฅธ ์์ ์ ์๊ฐ์ด ์์ ๋ ์ํ๋๋๋ก ํฉ๋๋ค. ์ด๋ ๋คํธ์ํฌ ์ํ๋ UI์ ๋ณต์ก์ฑ์ ๊ด๊ณ์์ด ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ์งํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
ํธ๋์ง์ ๊ฒฝ๊ณ
ํธ๋์ง์ ๊ฒฝ๊ณ๋ ๋ ๋ค๋ฅธ ์ค์ํ ์์์ ๋๋ค. ์ด ๊ฒฝ๊ณ๋ฅผ ์ฌ์ฉํ๋ฉด UI์ ์ผ๋ถ๋ฅผ ๊ฐ์ธ React๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง ์ง์ ํ ์ ์์ต๋๋ค. ํธ๋์ง์ ์ ํตํด ๊ธด๊ธํ ์ ๋ฐ์ดํธ์ ์ฐจ๋จ๋์ง ์์์ผ ํ๋ ์ ๋ฐ์ดํธ๋ฅผ ๊ตฌ๋ณํ ์ ์์ต๋๋ค. ๋ณธ์ง์ ์ผ๋ก ํธ๋์ง์ ๊ฒฝ๊ณ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์ํ ์์ ์ ์๋ฃํ ๋๊น์ง ์ค์ํ์ง ์์ ์ ๋ฐ์ดํธ๋ฅผ React๊ฐ ์ง์ฐ์ํฌ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ `useTransition` ํ ์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ๋ฉ๋๋ค.
React๊ฐ ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ
React๋ ์ ๊ตํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์์ ์ ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์์๋ฅผ ๊ณ ๋ คํฉ๋๋ค:
- ์ ๋ฐ์ดํธ๋ฅผ ์ ๋ฐํ ์ด๋ฒคํธ: ํด๋ฆญ ๋ฐ ํค ์ ๋ ฅ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ํธ์์ฉ์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ์ฐ์ ์์๊ฐ ๋ถ์ฌ๋ฉ๋๋ค.
- ์ ๋ฐ์ดํธ์ ์ฑ๊ฒฉ: ์ฌ์ฉ์ ๊ฐ์์ฑ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ UI ๋ณ๊ฒฝ์ด ์ฐ์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ๋คํธ์ํฌ ์กฐ๊ฑด ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค: ์ค์ผ์ค๋ฌ๋ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
React์ ๋ด๋ถ ์ค์ผ์ค๋ฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ผ์ด๋๋ ์ผ๊ณผ ๋ธ๋ผ์ฐ์ ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์ฐ์ ์์๋ฅผ ์กฐ์ ํ๋ฉฐ ํ๋ช ํ ๊ฒฐ์ ์ ๋ด๋ฆฝ๋๋ค. ์ด๋ฅผ ํตํด ๋ถํ๊ฐ ์ฌํ ์ํฉ์์๋ UI๊ฐ ๋ฐ์์ฑ์ ์ ์งํ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ด ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค.
์ค์ฉ์ ์ธ ๊ตฌํ: ๋์์ฑ ๊ธฐ๋ฅ ํ์ฉํ๊ธฐ
`startTransition` ํ ์ฌ์ฉํ๊ธฐ
`startTransition` ํ ์ ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ ๊ตฌํํ๋ ํต์ฌ ๋๊ตฌ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ํ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋์ง์ ์ผ๋ก ํ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ ํ์ํ ๊ฒฝ์ฐ ์ค๋จ๋๊ฑฐ๋ ์ง์ฐ๋ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ, ๋ด๋น๊ฒ์ด์ ๋ฐ ์ฌ์ฉ์ ์ํธ์์ฉ๊ณผ ์ง์ ์ ์ผ๋ก ๊ด๋ จ์ด ์๋ ๊ธฐํ ์์ ์ ํนํ ์ ์ฉํฉ๋๋ค.
`startTransition` ํ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
import { useState, useTransition } from 'react';
function MyComponent() {
const [isPending, startTransition] = useTransition();
const [resource, setResource] = useState(null);
const handleClick = () => {
startTransition(() => {
// Simulate fetching data (replace with your actual data fetching)
setTimeout(() => {
setResource('Data fetched!');
}, 2000);
});
};
return (
<div>
<button onClick={handleClick}>Fetch Data</button>
{isPending ? <p>Loading...</p> : <p>{resource}</p>}
</div>
);
}
์ด ์์ ์์ `startTransition`์ `setResource` ํธ์ถ์ ๊ฐ์ธ๊ณ ์์ต๋๋ค. React๋ ์ด์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ์ ๊ด๋ จ๋ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋์ง์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊ฐ์ ธ์ค๋ ๋์ UI๋ ๋ฐ์์ฑ์ ์ ์งํฉ๋๋ค.
`Suspense`์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์ดํดํ๊ธฐ
React Suspense๋ ๋์์ฑ ๊ธฐ๋ฅ ์ํ๊ณ์ ๋ ๋ค๋ฅธ ์ค์ํ ๋ถ๋ถ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ปดํฌ๋ํธ์ ๋ก๋ฉ ์ํ๋ฅผ ์ฐ์ํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ปดํฌ๋ํธ๊ฐ ์ผ์ ์ค๋จ๋๋ฉด(์: ๋ฐ์ดํฐ ๋ก๋๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค), React๋ ๋ฐ์ดํฐ๊ฐ ์ค๋น๋ ๋๊น์ง ํด๋ฐฑ(fallback) UI(์: ๋ก๋ฉ ์คํผ๋)๋ฅผ ๋ ๋๋งํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์ค์ ์๊ฐ์ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํต๋๋ค.
๋ค์์ `Suspense`๋ฅผ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ์ ํตํฉํ๋ ์์ ์ ๋๋ค(์ด ์์ ๋ `swr` ๋๋ `react-query`์ ๊ฐ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค).
import React, { Suspense } from 'react';
import { useData } from './api'; // Assuming a data fetching function
function MyComponent() {
const data = useData(); // useData() returns a promise.
return (
<div>
<h1>Data:</h1>
<p>{data}</p>
</div>
);
}
function App() {
return (
<Suspense fallback={<p>Loading...</p>}>
<MyComponent />
</Suspense>
);
}
์ด ์์ ์์ `MyComponent`๋ ํ๋ก๋ฏธ์ค(promise)๋ฅผ ๋ฐํํ๋ ์ปค์คํ ํ `useData`๋ฅผ ์ฌ์ฉํฉ๋๋ค. `MyComponent`๊ฐ ๋ ๋๋ง๋ ๋ `Suspense` ์ปดํฌ๋ํธ๊ฐ ์ด๋ฅผ ๊ฐ์๋๋ค. ๋ง์ฝ `useData` ํจ์๊ฐ ํ๋ก๋ฏธ์ค๋ฅผ ๋์ง๋ฉด(๋ฐ์ดํฐ๊ฐ ์์ง ์ฌ์ฉ ๊ฐ๋ฅํ์ง ์๊ธฐ ๋๋ฌธ์), `fallback` prop์ด ๋ ๋๋ง๋ฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ง๋ฉด `MyComponent`๋ ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋งํฉ๋๋ค.
์ฌ์ฉ์ ์ํธ์์ฉ ์ต์ ํํ๊ธฐ
์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ์ํธ์์ฉ์ ๋ฏธ์ธ ์กฐ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค๋ฅธ ์งํ ์ค์ธ ์์ ์ด ์๋๋ผ๋ ๋ฒํผ ํด๋ฆญ์ด ํญ์ ์ฆ์ ์ฒ๋ฆฌ๋๋๋ก ๋ณด์ฅํ๊ณ ์ถ์ ์ ์์ต๋๋ค. `UserBlocking` ํธ๋์ง์ ์ ์ฌ์ฉํ๊ฑฐ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ์คํ๊ฒ ๊ตฌ์ฑํ๋ฉด ๋์ ๋ฐ์์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๋ค์ ์์ ๋ฅผ ๊ณ ๋ คํด ๋ณด์ธ์:
import React, { useState } from 'react';
function MyComponent() {
const [message, setMessage] = useState('Hello');
const handleClick = () => {
// Immediate update for user interaction
setMessage('Clicked!');
};
const handleAsyncOperation = () => {
// Simulate an async operation that could take some time
setTimeout(() => {
// Update with a transition to prevent blocking the user experience
setMessage('Async operation completed.');
}, 3000);
};
return (
<div>
<button onClick={handleClick}>Click Me</button>
<button onClick={handleAsyncOperation}>Start Async Operation</button>
<p>{message}</p>
</div>
);
}
์ด ์์ ์์ ๋ฒํผ ํด๋ฆญ์ `message` ์ํ๋ฅผ ์ฆ์ ๋ณ๊ฒฝํ์ฌ ์ฆ๊ฐ์ ์ธ ์๋ต์ ๋ณด์ฅํ๋ ๋ฐ๋ฉด, `setTimeout`์ ํฌํจํ๋ ๋น๋๊ธฐ ์์ ์ ์ฌ์ฉ์์ ๋ฒํผ๊ณผ์ ์ํธ์์ฉ์ ๋ฐฉํดํ์ง ์๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋ฉ๋๋ค.
๊ณ ๊ธ ๊ธฐ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
๋ถํ์ํ ๋ ๋๋ง ํผํ๊ธฐ
๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ์ฑ๋ฅ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ ๋๋ง์ ์ต์ ํํ๋ ค๋ฉด ๋ค์ ์ ๋ต์ ๊ณ ๋ คํ์ธ์:
- ๋ฉ๋ชจ์ด์ ์ด์ (Memoization): `React.memo` ๋๋ `useMemo`๋ฅผ ์ฌ์ฉํ์ฌ props๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
- ํ๋กํ์ผ๋ง(Profiling): React ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฃผ ๋ฆฌ๋ ๋๋ง๋๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ณํฉ๋๋ค.
- ํจ์จ์ ์ธ ์ํ ์ ๋ฐ์ดํธ: ๋ถํ์ํ๊ฒ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ง ์๋๋ก ํฉ๋๋ค.
์ด๋ฌํ ์ต์ ํ ๊ธฐ์ ์ React๊ฐ ์ ๋ฐ์ดํธ ์ค์ ํด์ผ ํ ์์ ์ ์์ ์ต์ํํ๋ ๋ฐ ๋์์ด ๋๋ฏ๋ก ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ ๋งฅ๋ฝ์์ ํนํ ์ค์ํฉ๋๋ค. ์ด๋ ๋ฐ์์ฑ ๋ฐ ์ฑ๋ฅ ํฅ์์ผ๋ก ์ด์ด์ง๋๋ค.
์ฑ๋ฅ ํ๋กํ์ผ๋ง ๋ฐ ๋๋ฒ๊น
React ๊ฐ๋ฐ์ ๋๊ตฌ๋ ๋ฐ์ด๋ ํ๋กํ์ผ๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํ๋กํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ์ปดํฌ๋ํธ๊ฐ ์ด๋ป๊ฒ ๋ ๋๋ง๋๋์ง ์ดํดํ ์ ์์ต๋๋ค. ์ด๋ ์ํํ ์ฑ๋ฅ์ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํ๋กํ์ผ๋ง์ ํตํด ๋ค์์ ์ํํ ์ ์์ต๋๋ค:
- ๋๋ฆฌ๊ฒ ๋ ๋๋ง๋๋ ์ปดํฌ๋ํธ ์๋ณ: ์์๋ณด๋ค ๋ ๋๋งํ๋ ๋ฐ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ปดํฌ๋ํธ๋ฅผ ์ ํํ ์ฐพ์๋ ๋๋ค.
- ๋ฆฌ๋ ๋๋ง ๋ถ์: ์ปดํฌ๋ํธ๊ฐ ์ ๋ฆฌ๋ ๋๋ง๋๋์ง, ๊ทธ๋ฆฌ๊ณ ํด๋น ๋ฆฌ๋ ๋๋ง์ด ํ์ํ์ง ํ์ธํฉ๋๋ค.
- ์ํ ์ ๋ฐ์ดํธ์ ์ํฅ ์ถ์ : ์ํ ์ ๋ฐ์ดํธ๊ฐ ๋ ๋๋ง ๊ณผ์ ์ ์ด๋ป๊ฒ ์ํฅ์ ๋ฏธ์น๋์ง ์ดํดํฉ๋๋ค.
React ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ์ธ์.
์ ๊ทผ์ฑ ๊ณ ๋ ค ์ฌํญ
๋์์ฑ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ ๊ทผ์ฑ์ ์ ํดํ์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ํค๋ณด๋ ๋ด๋น๊ฒ์ด์ ์ ์ ์งํ๊ณ , ์ด๋ฏธ์ง์ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ UI๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ณด์ฅํด์ผ ํฉ๋๋ค. ์ ๊ทผ์ฑ์ ์ํ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ARIA ์์ฑ: ์ ์ ํ ARIA ์์ฑ์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ์ ์ ๊ทผ์ฑ์ ํฅ์์ํค์ธ์.
- ํฌ์ปค์ค ๊ด๋ฆฌ: ์ฌ์ฉ์๊ฐ ํค๋ณด๋๋ฅผ ์ฌ์ฉํ์ฌ UI๋ฅผ ํ์ํ ์ ์๋๋ก ์ ์ ํ ํฌ์ปค์ค ๊ด๋ฆฌ๋ฅผ ์ ์งํ์ธ์.
- ์์ ๋๋น: ์ ์ ํ ์์ ๋๋น๋ฅผ ๋ณด์ฅํ์ธ์.
- ์คํฌ๋ฆฐ ๋ฆฌ๋ ํธํ์ฑ: ์คํฌ๋ฆฐ ๋ฆฌ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ์ธ์.
์ด๋ฌํ ๊ณ ๋ ค ์ฌํญ์ ํตํฉํจ์ผ๋ก์จ ์ ์ธ๊ณ ๋ชจ๋ ์ฌ๋์๊ฒ ํฌ๊ด์ ์ด๊ณ ์ ๊ทผ ๊ฐ๋ฅํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ํฅ ๋ฐ ๊ตญ์ ํ
๋ค์ํ ๊ธฐ๊ธฐ ๋ฐ ๋คํธ์ํฌ ์กฐ๊ฑด์ ์ ์ํ๊ธฐ
React ๋์์ฑ ๊ธฐ๋ฅ์ ์์น์ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ ๋ ํนํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ์ฑ๋ฅ ๋ฐ์คํฌํฑ๋ถํฐ ์ฐ๊ฒฐ์ด ์ ํ๋ ์ง์ญ์ ์ ๋์ญํญ ํด๋ํฐ์ ์ด๋ฅด๊ธฐ๊น์ง ๋งค์ฐ ๋ค์ํ ๊ธฐ๊ธฐ์์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฌํ ๋ค์ํ ์กฐ๊ฑด์ ์ ์ํ์ฌ ๊ธฐ๊ธฐ๋ ๋คํธ์ํฌ์ ๊ด๊ณ์์ด ์ผ๊ด๋๊ฒ ์ํํ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ด์ง๋ฆฌ์ ์ฌ์ฉ์๋ฅผ ์ํด ์ค๊ณ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฏธ๊ตญ์ด๋ ์ผ๋ณธ ์ฌ์ฉ์๋ฅผ ์ํด ์ค๊ณ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋นํด ๋ ๋ง์ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ์ ์ฒ๋ฆฌํด์ผ ํ ์ ์์ต๋๋ค. React ๋์์ฑ ๊ธฐ๋ฅ์ ๊ฐ ์ฌ์ฉ์์ ๋ง๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ ์ต์ ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ตญ์ ํ ๋ฐ ์ง์ญํ
์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตญ์ ํ ๋ฐ ์ง์ญํ๋์๋์ง ํ์ธํ์ธ์. ์ฌ๊ธฐ์๋ ์ฌ๋ฌ ์ธ์ด ์ง์, ๋ค๋ฅธ ๋ ์ง/์๊ฐ ํ์์ ๋ํ ์ ์, ๋ค๋ฅธ ํตํ ํ์ ์ฒ๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ตญ์ ํ๋ ํ ์คํธ์ ์ฝํ ์ธ ๋ฅผ ๋ฒ์ญํ์ฌ ๋ชจ๋ ๊ตญ๊ฐ์ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์๋๋ก ๋์ต๋๋ค.
React๋ฅผ ์ฌ์ฉํ ๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ์ธ์:
- ๋ฒ์ญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ๋ฒ์ญ์ ๊ด๋ฆฌํ๊ธฐ ์ํด `react-i1next` ๋๋ `lingui`์ ๊ฐ์ ๊ตญ์ ํ(i18n) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์.
- ๋ ์ง ๋ฐ ์๊ฐ ํ์: `date-fns` ๋๋ `moment.js`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ญ ํ์ค์ ๋ฐ๋ผ ๋ ์ง์ ์๊ฐ์ ํ์์ ์ง์ ํ์ธ์.
- ์ซ์ ๋ฐ ํตํ ํ์: ์ฌ์ฉ์์ ๋ก์บ์ ๋ฐ๋ผ ์ซ์์ ํตํ์ ํ์์ ์ง์ ํ๋ ค๋ฉด `Intl`๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์.
- ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ(RTL) ์ง์: ๋ ์ด์์์ด ์๋์ด ๋ฐ ํ๋ธ๋ฆฌ์ด์ ๊ฐ์ RTL ์ธ์ด๋ฅผ ์ง์ํ๋์ง ํ์ธํ์ธ์.
๋ค๋ฅธ ์๊ฐ๋์ ๋ํ ๊ณ ๋ ค ์ฌํญ
์ ์ธ๊ณ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์์ ํ ๋๋ ์๊ฐ๋๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์์ ํ์ง ์๊ฐ๋๋ก ๋ ์ง์ ์๊ฐ์ ํ์ํ์ธ์. ์๋จธํ์์ ์ ์ํ์ธ์. ์ด๋ฌํ ์ธก๋ฉด์ ์ฒ๋ฆฌํ๊ธฐ ์ํด `date-fns-tz`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฒคํธ๋ฅผ ๊ด๋ฆฌํ ๋ ์ ์ธ๊ณ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์๊ฐ ๋ฐ ์ผ์ ์ ๋ํ ์ ํํ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋๋ก ์๊ฐ๋๋ฅผ ๊ธฐ์ตํ์ธ์.
๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๋ฏธ๋ ๋ํฅ
์ต์ React ๊ธฐ๋ฅ์ ๋ํ ์ต์ ์ ๋ณด ์ ์งํ๊ธฐ
React๋ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ์ต์ ๋ฆด๋ฆฌ์ค ๋ฐ ๊ธฐ๋ฅ์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ ์งํ์ธ์. React์ ๊ณต์ ๋ฌธ์, ๋ธ๋ก๊ทธ ๋ฐ ์ปค๋ฎค๋ํฐ ํฌ๋ผ์ ํ๋ก์ฐํ์ธ์. ์๋ก์ด ๊ธฐ๋ฅ์ ์คํํ๊ธฐ ์ํด React์ ์ต์ ๋ฒ ํ ๋ฒ์ ์ ๊ณ ๋ คํด ๋ณด์ธ์. ์ฌ๊ธฐ์๋ ๋์์ฑ ๊ธฐ๋ฅ์ ์ด์ ์ ๊ทน๋ํํ๊ธฐ ์ํด ๊ทธ ์งํ๋ฅผ ์ถ์ ํ๋ ๊ฒ๋ ํฌํจ๋ฉ๋๋ค.
์๋ฒ ์ปดํฌ๋ํธ ๋ฐ ์คํธ๋ฆฌ๋ฐ ์์ฉํ๊ธฐ
React ์๋ฒ ์ปดํฌ๋ํธ์ ์คํธ๋ฆฌ๋ฐ์ ํนํ ๋ฐ์ดํฐ ์ง์ฝ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๋์ฑ ํฅ์์ํค๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋๋ค. ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ถ๋ฅผ ์๋ฒ์์ ๋ ๋๋งํ์ฌ ํด๋ผ์ด์ธํธ์์ ๋ค์ด๋ก๋ํ๊ณ ์คํํด์ผ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์ ์ค์ผ ์ ์์ต๋๋ค. ์คํธ๋ฆฌ๋ฐ์ ์ฌ์ฉํ๋ฉด ์ฝํ ์ธ ๋ฅผ ์ ์ง์ ์ผ๋ก ๋ ๋๋งํ์ฌ ๋ ๋ฐ์์ฑ์ด ์ข์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ ์ค์ํ ๋ฐ์ ์ด๋ฉฐ React๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ ์ ๋ ์ค์ํด์ง ๊ฒ์ ๋๋ค. ์ด๋ค์ ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง๊ณผ ํจ๊ณผ์ ์ผ๋ก ํตํฉ๋์ด ๋ ๋น ๋ฅด๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋ฏธ๋๋ฅผ ์ํ ๊ตฌ์ถ
React ๋์์ฑ ๊ธฐ๋ฅ์ ์์ฉํ๊ณ ์ฑ๋ฅ์ ์ฐ์ ์ํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฏธ๋์๋ ๋๋นํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์๊ฐํด๋ณด์ธ์:
- ์ฌ์ฉ์ ๊ฒฝํ ์ฐ์ : ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ์ง๊ด์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉ์๋ฅผ ์ต์ฐ์ ์ผ๋ก ์๊ฐํ์ธ์.
- ํจ์จ์ ์ธ ์ฝ๋ ์์ฑ: ์ฑ๋ฅ์ ์ํด ์ฝ๋๋ฅผ ์ต์ ํํ์ธ์.
- ์ ๋ณด ์ ์ง: ์ต์ React ๊ธฐ๋ฅ ๋ฐ ๋ฐ์ ์ ๋ํ ์ ๋ณด๋ฅผ ๊ณ์ ํ์ ํ์ธ์.
๊ฒฐ๋ก
React ๋์์ฑ ๊ธฐ๋ฅ, ํนํ ์ฐ์ ์์ ๋ ์ธ ์ค์ผ์ค๋ง์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์งํ์ ๋ฐ๊พธ๊ณ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ผ ๋ฟ๋ง ์๋๋ผ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ๋ฐ์์ฑ์ด ์ข์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ํจ๊ณผ์ ์ผ๋ก ์ดํดํ๊ณ ํ์ฉํจ์ผ๋ก์จ ์ค๋๋ ์ ๊ธ๋ก๋ฒ ์์ฅ์์ ์ฌ์ฉ์๋ฅผ ํ๋ณดํ๊ณ ์ ์งํ๋ ๋ฐ ํ์์ ์ธ ํ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค. React๊ฐ ๊ณ์ ์งํํจ์ ๋ฐ๋ผ ์ด๋ฌํ ๋ฐ์ ์ ์์ฉํ๊ณ ์น ๊ฐ๋ฐ์ ์ต์ ์ ์ ์์ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ๋ ๋น ๋ฅด๊ณ , ๋ ์ํธ์์ฉ์ ์ด๋ฉฐ, ์ฌ์ฉ์ ์นํ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋์ธ์.
React ๋์์ฑ ๊ธฐ๋ฅ์ ์์น์ ์ดํดํ๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํจ์ผ๋ก์จ ์ฌ์ฉ์์ ์์น, ๊ธฐ๊ธฐ ๋๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ๊ด๊ณ์์ด ๋ฐ์์ฑ ์๊ณ ์ง๊ด์ ์ด๋ฉฐ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ํ ์ด๋ฌํ ์ฝ์์ ๋์์์ด ํ์ฅ๋๋ ๋์งํธ ์ธ๊ณ์์ ์ฑ๊ณตํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์ ์ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ๋ ๊ฒฝ์๋ ฅ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ง์ ์ด์ด์ง๋๋ค. ์ด๋ ์ค๋๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ถ์ผ์์ ์ผํ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ํต์ฌ ์๊ตฌ ์ฌํญ์ ๋๋ค.